﻿// See https://aka.ms/new-console-template for more information
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Runtime.CompilerServices;

Console.WriteLine("Hello, World!");
#region 测试1
//Task.Factory.StartNew(() =>
//{
//    Stopwatch sw = Stopwatch.StartNew();
//    List<int> list = new List<int>();
//    for (int i = 0; i < 1000000; i++)
//    {
//        list.Add(i + 1);
//    }
//    sw.Stop();
//    Console.WriteLine(sw.ElapsedMilliseconds + "毫秒");
//    sw = Stopwatch.StartNew();
//    // 使用Parallel.ForEach来进行多线程处理
//    Parallel.ForEach(list, item =>
//    {
//        int t = Thread.GetCurrentProcessorId();
//        // 这里可以放置需要并行处理的代码
//        Console.WriteLine(item + "--" + t); // 例如，计算每个数的平方

//    });
//    sw.Stop();
//    Console.WriteLine(sw.ElapsedMilliseconds + "毫秒");
//});
#endregion
#region 测试2
//ManualResetEvent signal = new ManualResetEvent(false);
//ConcurrentQueue<int> queue = new ConcurrentQueue<int>();
//Task a = Task.Factory.StartNew(() =>
//{
//    Stopwatch sw = Stopwatch.StartNew();
//    for (int i = 0; i < 1000000; i++)
//    {
//        queue.Enqueue(i + 1);
//    }
//    sw.Stop();
//    Console.WriteLine(sw.ElapsedMilliseconds + "毫秒");
//});
//await a;
//Thread.Sleep(12000);
//Stopwatch sw = Stopwatch.StartNew();
//Task b = Task.Factory.StartNew(() =>
//{
//    // 启动4个工作线程
//    for (int i = 0; i < 100; i++)
//    {
//        Thread thread = new Thread(ProcessItem)
//        {
//            IsBackground = true
//        };
//        thread.Start();
//    }
//});
//void ProcessItem()
//{
//    while (queue.TryDequeue(out int item))
//    {
//        // 执行你需要的操作
//        Console.WriteLine(@$"{item}--{Thread.CurrentThread.ManagedThreadId}");

//        // 如果队列为空，则设置信号
//        if (queue.IsEmpty)
//        {
//            sw.Stop();
//            Console.WriteLine(sw.ElapsedMilliseconds + "毫秒");
//            signal.Set();
//        }
//    }
//}
#endregion
#region 测试3
Task.Factory.StartNew(() =>
{
    Stopwatch sw = Stopwatch.StartNew();
    List<int> list = new List<int>();
    for (int i = 0; i < 1000000; i++)
    {
        list.Add(i + 1);
    }
    sw.Stop();
    Console.WriteLine(sw.ElapsedMilliseconds + "毫秒");
    sw = Stopwatch.StartNew();
    // 使用Parallel.ForEach来进行多线程处理
    foreach (var item in list)
    {
        var t = Thread.CurrentThread.ManagedThreadId;
        Console.WriteLine(item + "--" + t); // 例如，计算每个数的平方
    }
    sw.Stop();
    Console.WriteLine(sw.ElapsedMilliseconds + "毫秒");
});

#endregion

while (true)
{
    Thread.Sleep(1000 * 60);
}